home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
COMMUNIC
/
H191.ZIP
/
CA29-3.EXE
/
KERMSERV.CMD
< prev
next >
Wrap
OS/2 REXX Batch file
|
1988-09-13
|
3KB
|
152 lines
; Kermit server command script file
; ---------------------------------
; Commenced: 6/8/88 R.McG
;
; First - open a window
;
ON ESCAPE GOSUB Exit ; Exit if esc pressed
Restart:
GOSUB Window ; Open window and ask for command
;
; S0 returns the response: Interpret the response
;
SWITCH S0
CASE "1"
GOTO Send
ENDCASE
CASE "2"
GOTO Receive
ENDCASE
CASE "3"
GOTO Finish
ENDCASE
CASE "4"
GOTO Logout
ENDCASE
CASE "S"
GOTO Send
ENDCASE
CASE "R"
GOTO Receive
ENDCASE
CASE "F"
GOTO Finish
ENDCASE
CASE "L"
GOTO Logout
ENDCASE
ENDSWITCH
;
; Unrecognized entry
;
SOUND 100 500
GOTO Restart
;
; Exit routine
;
Exit:
RESTORE ; CLose the window we opened in subroutine Window
EXIT
;
; Command subroutine - build and send a KERMIT packet
; .. The body of the packet is in S0
;
Command:
N0 = 1 ; Set MARK value (SOH)
LENGTH S0 N2 ; Compute length of type&data
N3 = N2+2+32 ; Account for blknum and checksum, and make an ASCII
ITOC N0 S1(0) ; Set MARK into string
ITOC N3 S1(1) ; Set length into string
S1(2) = " " ; Set block number
S1(3:79) = S0 ; Store type and data
;
; Now, compute the checksum
;
N4 = 1 ; Start at length variable
N5 = N2+2 ; Make a loop count
N6 = 0 ; Initialize summation
Loop:
CTOI S1(N4:N4) N7
N6 = N6+N7 ; Sum the value
INC N4 ; Point to next
DEC N5 ; Decrement count to go
IF NOT ZERO N5 ; Loop for count in
GOTO Loop ; .. N5
ENDIF
N6 = N6-(N6/256)*256 ; Reduce to 8 bits
N7 = N6/64 ; Extract top 2 bits
N6 = N6+N7 ; Sum MSBits with low 6 bits
N6 = N6-(N6/64)*64 ; And reduce result to 6 bits
N6 = N6+32 ; Make printable ascii
;
; Store the CHECKSUM, and transmit the whole
;
N2 = N2+3 ; COmpute index to checksum
ITOC N6 S1(n2:n2)
INC N2 ; Point after checksum
S1(N2) = "!" ; Store a c/r
TRANS S1 ; And send it
RETURN ; And we're done
;
; Build and send a logout and we're done
;
Logout:
S0 = "GL"
GOSUB Command
GOTO Exit
;
; Build and send a finish and we're done
;
Finish:
S0 = "GF"
GOSUB Command
GOTO Exit
;
; Initiate a KERMIT send operation
;
Send:
SOUND 400 200
ATSAY 17 12 (Default) "File name: "
ATGET 17 27 (Default) 40 S1
IF NOT ISFILE S1
SOUND 100 500
ATSAY 17 27 (Default) "File does not exist... please re-enter. "
PAUSE 5
GOTO Send
ENDIF
SENDFILE KERMIT S1
GOTO Exit
;
; Initiate a KERMIT receive operation
;
Receive:
SOUND 400 200
ATSAY 17 12 (Default) "File name: "
ATGET 17 27 (Default) 40 S1
S0 = "R"&S1
GOSUB Command
GETFILE KERMIT
GOTO Exit
;
; Open a window and read a command
;
Window:
SAVE 10 10 18 70
BOX 10 10 18 70 (Default)
ATSAY 10 12 (Default) " COM-AND Kermit Server "
ATSAY 11 12 (Default) "(1) Send (request host to receive file(s))"
ATSAY 12 12 (Default) "(2) Receive (request host to send file(s))"
ATSAY 13 12 (Default) "(3) Finish (terminate host KERMIT server)"
ATSAY 14 12 (Default) "(4) LogOut (terminate host server and logoff)"
ATSAY 16 12 (Default) "Enter command: "
ATGET 16 27 (Default) 2 s0
UPPER S0 ; Make it upper case
Return